home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Experimental BBS Explossion 3
/
Experimental BBS Explossion III.iso
/
c
/
cujoct93.zip
/
1110090A
< prev
next >
Wrap
Text File
|
1993-08-10
|
1KB
|
73 lines
/* stack2.c */
#include "stack2.h"
#define MAX_STACKS 16
#define STACK_SIZE 100
static struct stack
{
int data[STACK_SIZE];
int ptr;
int active;
} stacks[MAX_STACKS];
int stack_open(void)
{
int i;
/* Activate an inactive stack */
for (i = 0; i < MAX_STACKS; ++i)
if (!stacks[i].active)
{
stacks[i].ptr = 0;
stacks[i].active = 1;
return i;
}
return STACK_ERROR;
}
int stack_push(int id, int x)
{
if (id >= 0 && id < MAX_STACKS && stacks[id].active)
{
int ptr = stacks[id].ptr;
if (ptr == STACK_SIZE)
return STACK_ERROR;
else
{
stacks[id].data[ptr] = x;
++stacks[id].ptr;
return x;
}
}
else
return STACK_ERROR;
}
int stack_pop(int id)
{
if (id >= 0 && id < MAX_STACKS && stacks[id].active)
{
int ptr = stacks[id].ptr;
if (ptr == 0)
return STACK_ERROR;
else
{
ptr = --stacks[id].ptr;
return stacks[id].data[ptr];
}
}
else
return STACK_ERROR;
}
void stack_close(int id)
{
if (id >= 0 && id < MAX_STACKS)
stacks[id].active = 0;
}